#include<stdio.h>
#include "DynamicArray.h"
#include<stdlib.h>
#include<string.h>
typedef struct 
{
    int id;
    char *name;
}Stu;

Stu* InitStu(int id,const char *name)
{
    Stu *s = (Stu*)malloc(sizeof(Stu));
    if(s == NULL)
    {
        printf("InitStu malloc error!\n");
        return NULL;
    }
    s->id = id;
    // s->name = malloc(strlen(name)+1)    strcpy(s->name,name);
    s->name = strdup(name);  //在堆上拷贝一个字符串:指针需要释放的
    return s;
}       

void FreeStu(void *ptr)
{
    Stu *s = (Stu*)ptr;
    free(s->name);
    // free(s->id);
    free(s);
}

void PrintStu(void *ptr)
{
    Stu *s = (Stu*)ptr;
    printf("%d %s\n",s->id,s->name);
}


// void PrintDouble(void *ptr)
// {
//     DArray *a = (DArray*)ptr;
//     PrintArray(a,PrintStu);
// }


// void FreeDouble(void *ptr)
// {
//     DArray *a = (DArray*)ptr;
//     FreeDArray(a,FreeStu);
// }


// bool Greater(void *p1,void *p2)
// {
//         Stu* s1 = (Stu*)p1;
//         Stu* s2 = (Stu*)p2;
//         return s1->id < s2->id;
// }


// bool NameGreater(void *p1,void *p2)
// {
//         Stu* s1 = (Stu*)p1;
//         Stu* s2 = (Stu*)p2;
//         return strcmp(s1->name,s2->name)>0;
// }


int main()
{
    DArray *a = InitDArray(10);
    // // FreeDArray(a);
    // for(int i=0;i<80;i++)
    // {
    //     InsertTail(a,i+1);
    // }


    // // int *p = FindByElemrnt(a,10);
    // // if(p)
    // // {
    // //     printf("找到了%d\n",*p);
    // // }
    // // else
    // // {
    // //     printf("没找到！\n");
    // // }

    // RemoveByElement(a,10);
    // PrintArray(a);
    // FreeDArray(a,FreeStu);

    // DArray *d = InitDArray(3);

    // DArray *a = InitDArray(10);
    // DArray *b = InitDArray(10);
    InsertTail(a,InitStu(3,"张三"));

    InsertTail(a,InitStu(1,"李四"));
    InsertTail(a,InitStu(2,"王五"));

    // InsertTail(d,a);
    // InsertTail(d,b);

    // Sort(a,NameGreater);
    PrintArray(a,PrintStu);
    FreeDArray(a,FreeStu);
    // PrintArray(d,PrintDouble);
    // FreeDArray(d,FreeDouble);
    return 0;
}